常常,自己製作UserControl的時候,都要考慮,到底要不要用UpdatePanel...
非同步更新嘛...炫!!
但是...問題來了...
一個webform裡頭,只能有一個ScriptManager...
usercontrol裡頭放了...怕跟其他usercontrol、masterpage甚至page本身的scriptmanager衝突...
不放嘛...只好燒香拜佛,用的人自己會放吧...
這...出問題,還是找寫元件的人啊..不好不好!!
撰寫ASP.Net WebForm Application的時候,或多或少都要自己來自訂幾個UserControl,
這樣才顯得自己是高手高高手嘛...(大誤)
製作UserControl的時候,拜託...都web 2.0的時代了,肯定要來給他ajax一下...ScriptManager+UpdatePanel絕對是基本配備...非同步更新嘛...炫咩!!
但是...問題來了...
一個webform裡頭,只能有一個ScriptManager...
usercontrol裡頭放了...怕跟其他usercontrol、masterpage甚至page本身的scriptmanager衝突...
不放嘛...只好燒香拜佛,用的人自己會放吧...
這...出問題,還是找寫元件的人啊..不好不好!!
ASP.Net WebForm上頭,只能存在一個ScriptManager....
如果,自己在usercontrol上加上scriptmanager...
那...如果使用元件的人,自己再加一個...出事...
如果不加,使用的人也忘記加...那還是...出事
ASP.Net UserControl 如何使用UpdatePanel,又不需要擔心使用元件的人有沒有加入ScriptManager的方法
很簡單...
在你的UserControl上,UpdatePanel前,加上一個placeholder
然後,在你的updatepanel的init事件上,這麼寫...
if(ScriptManager.GetCurrent(this.Page) == null)
{
placeholder.Controls.Add(new ScriptManager());
}
不懂純推
請教一下
這個 placeholder 是「整個 form」共用的嗎?
不是...asp.net裡頭有個名為placeholder元件,可以在執行時期利用程式加入各式各樣的元件。
它跟panel不一樣的是,它自己本身不會產生html標籤,不會破壞整個網頁編排的版面。
加入placeholder的目的,是在偵測scriptmanager不存在的時候,還有機會自己把scriptmanager加上去,防止usercontrol因為缺少了scriptmanager就這麼死翹翹了。
今天又學到一點,賺到了
ScriptManager建議放在主版頁面裡
以確保唯一性
不過, 我都用AJAX Control Toolkit 的 ToolkitScriptManager
一般來說是這樣沒錯,不過總是要防呆
而且,寫UserControl給其他人使用,還要求一定要先放什麼元件,其實沒什麼道理。
不論是ScriptManager還是 ToolkitScriptManager
在ASP.NET早期的版本都不是預設的控制項啊
你如果寫在UserControl裡
如果他在同一個頁面的其他UserControl裡
也用的話
就會衝突了
所以……需要偵測啦